from time import sleep

from public.action import *
from public.business import *
from public.testData import *
from public.tools import *

testCase = "DBshop002_余额支付"
# 1、在首页搜索小米,点击搜索
firefox = openBrowser(url)  # 打开网页
firefox.maximize_window()  # 窗口最大化
# 调用自定义函数进行登录
DBshopLogin(firefox, userName, password)
# 在首页的搜索框输入小米
firefox.find_element_by_xpath('//input[@name="keywords"]').send_keys('小米')
# 点击搜索
firefox.find_element_by_xpath('//input[@type="submit"]').click()
# 2、选择小米mix3,加入到购物车,点击购物车
# 下拉右侧滚动条
# firefox.execute_script("window.scrollTo(0,500)")
# priceElement=firefox.find_element_by_id('goods_price_8')
# 模拟鼠标移动
# moveToElement(firefox,priceElement)
# 点击加入购物车
# firefox.find_element_by_xpath('//a[@onclick="add_cart(8, 2);"]').click()
# 点击进入购物车
# firefox.find_element_by_id('J_miniCart').click()
# 点击商品图片弹出新页面
firefox.find_element_by_xpath('//a[@href="/dbshop/goods/8/2"]').click()
# 切换页面
switchWindow(firefox, 2)
# 在新页面中点击加入购物车
firefox.find_element_by_id('add_cart_submit').click()
sleep(5)
# 点击去购物车结算按钮
firefox.find_element_by_link_text('去购物车结算').click()
# 3、点击去结算
firefox.find_element_by_link_text('去结算').click()
# 4、点击下一步
firefox.find_element_by_xpath('//input[@value="下一步"]').click()
# 5、选择余额支付,点击确认订单
firefox.find_element_by_xpath('//input[@value="yezf"]').click()
firefox.find_element_by_xpath('//input[@value="确认订单"]').click()
# 使用变量orderNO存储订单编号
orderNO = firefox.find_element_by_xpath('(//font[@color="color:#ED145B"])[2]').text
rootPath = get_pro_rootpath()
# 将订单编号写入到文件中
writeFile(rootPath + '\public\order1.txt', orderNO)
# 6、点击马上支付，支付成功
firefox.find_element_by_xpath('//input[@value="马上去支付"]').click()

# 7、登录后台管理系统
firefox.get(urlAdmin)
# 登录后台
DBshopLoginAdmin(firefox)
# 8、击商品管理订单管理，找到刚才前台提交的订单，点击编辑查看
# 调用后台的菜单操作函数
DBshopEnterMenu2(firefox, '销售管理', '订单管理')
# 搜索出订单
firefox.find_element_by_name('order_sn').send_keys(orderNO)  # 输入订单编号，orderNO里面就是刚才下单的时候存储的订单编号
firefox.find_element_by_xpath('//button').click()  # 点击搜索按钮
firefox.find_element_by_link_text('编辑查看').click()
# 9.点击发货操作按钮，编辑快递单号“1000000000” 发货说明保证正品，点击点击发货
firefox.find_element_by_link_text('发货操作').click()
firefox.find_element_by_id('express_number').send_keys("1000000000")
firefox.find_element_by_id('state_info').send_keys("保证正品")
firefox.find_element_by_xpath('//button').click()
# 10、到DBshop前台我的订单中完成收货  进入前台我的订单—已发货，点击确认收货，完成订单。
firefox.get(url)
# 点击我的订单
firefox.find_element_by_link_text('我的订单').click()
# 点击已发货
firefox.find_element_by_partial_link_text('已发货').click()  # 点击已发货页签
firefox.find_element_by_name('search_order_sn').send_keys(orderNO)  # 输入订单编号
firefox.find_element_by_xpath('//button').click()  # 点击搜索
# 点击确认收货
firefox.find_element_by_xpath('//button[text()="确认收货"]').click()  # 点击确认收货
firefox.find_element_by_xpath('//button[@type="submit"]').click()  # 点击确认收货
firefox.switch_to.alert.accept()  # 处理js弹框，点击确定
# 11.到DBshop前台查看我的订单"交易完成"中,检查上面的订单状态
# 点击交易完成
firefox.find_element_by_partial_link_text('交易完成').click()  # 点击交易完成页签
firefox.find_element_by_name('search_order_sn').send_keys(orderNO)  # 输入订单编号
firefox.find_element_by_xpath('//button').click()  # 点击搜索
# 断言
try:
    firefox.find_element_by_link_text(orderNO)
    writeLog("%s 测试通过" % testCase)
except:
    writeLog("%s 测试失败" % testCase)
    getPhoto(firefox)
firefox.quit() # quit()函数有2个作用 1.关闭所有页面 2.关闭浏览器对象 quit()函数建议放到脚本的最后
